package com.songlanyun.modules.material.controller.admin;

import com.songlanyun.common.annotation.RepeatSubmit;
import com.songlanyun.common.annotation.SysLog;
import com.songlanyun.common.utils.PageUtils;
import com.songlanyun.common.utils.R;
import com.songlanyun.common.validator.ValidatorUtils;
import com.songlanyun.modules.material.model.SystemMaterialCheckDTO;
import com.songlanyun.modules.material.model.SystemMaterialDTO;
import com.songlanyun.modules.material.service.SystemMaterialService;
import com.songlanyun.modules.user.controller.AbstractController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;


/**
 * 平台宣传素材
 *
 * @author zx
 * @date 2021年3月1日 11:42:07
 */
@RestController
@RequestMapping("admin/material")
public class SystemMaterialAdminController extends AbstractController {
    @Autowired
    private SystemMaterialService systemMaterialService;

    /**
     * 分页列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params) {
        PageUtils page = systemMaterialService.queryPage(params);
        return R.ok().put("page", page);
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Integer id) {
        return R.ok().put("data", systemMaterialService.getById(id));
    }

    /**
     * 平台管理员
     * 发布宣传素材 下架宣传素材
     */
    @SysLog("平台管理员宣传内容上架或下架")
    @RepeatSubmit(value = "3")
    @PutMapping("/check")
    public R check(@RequestBody SystemMaterialCheckDTO dto){
        verifyAdmin();//校验用户
        return R.ok().put("data",systemMaterialService.check(dto));
    }

    /**
     * 保存
     */
    @SysLog("保存宣传素材")
    @RepeatSubmit(value = "3")
    @PutMapping("/save")
    public R save(@RequestBody SystemMaterialDTO dto) {
        verifyAdmin();//校验用户
        return R.ok().put("data",systemMaterialService.addEntity(dto));
    }

    /**
     * 修改
     */
    @SysLog("修改宣传素材")
    @RepeatSubmit(value = "3")
    @PutMapping("/update")
    public R update(@RequestBody SystemMaterialDTO dto) {
        verifyAdmin();//校验用户
        return R.ok().put("data",systemMaterialService.updateEntity(dto));
    }
    /**
     * 删除
     */
    @SysLog("删除宣传素材")
    @RepeatSubmit(value = "3")
    @DeleteMapping("/deleteById/{id}")
    public R deleteById(@PathVariable("id") Integer id) {
        verifyAdmin();//校验用户
        return R.ok().put("data",systemMaterialService.removeById(id));
    }

}
